package views; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridLayout; import java.util.ArrayList; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import models.Task; public class SimulatorFrame { JFrame frame = new JFrame(); JPanel panelCounter; JPanel framePanel; JPanel centrePanel; JPanel panel = new JPanel(); JTextField counter; private int[] parameters; private JTextField SimulationTimetext; private JTextField MaxServiceTimetext; private JTextField MinServiceTimetext; private JTextField MaxArrivalTimetext; private JTextField MinArrivalTimetext; private JTextField noQueuestext; private JButton startButton; public SimulatorFrame() { frame.setLayout(new BorderLayout()); JPanel inputBoxes = new JPanel(new GridLayout(2, 3)); JPanel panel1 = new JPanel(new GridLayout(1, 2)); JLabel noQueues = new JLabel("Queues"); noQueuestext = new JTextField(); panel1.add(noQueues); panel1.add(noQueuestext); inputBoxes.add(panel1); JPanel panel2 = new JPanel(new GridLayout(1, 2)); JLabel MinArrivalTime = new JLabel("Min Arrival Time"); MinArrivalTimetext = new JTextField(); panel2.add(MinArrivalTime); panel2.add(MinArrivalTimetext); inputBoxes.add(panel2); JPanel panel3 = new JPanel(new GridLayout(1, 2)); JLabel MaxArrivalTime = new JLabel("Max Arrival Time"); MaxArrivalTimetext = new JTextField(); panel3.add(MaxArrivalTime); panel3.add(MaxArrivalTimetext); inputBoxes.add(panel3); JPanel panel4 = new JPanel(new GridLayout(1, 2)); JLabel MinServiceTime = new JLabel("Min Service Time"); MinServiceTimetext = new JTextField(); panel4.add(MinServiceTime); panel4.add(MinServiceTimetext); inputBoxes.add(panel4); JPanel panel5 = new JPanel(new GridLayout(1, 2)); JLabel MaxServiceTime = new JLabel("Max Service Time"); MaxServiceTimetext = new JTextField(); panel5.add(MaxServiceTime); panel5.add(MaxServiceTimetext); inputBoxes.add(panel5); JPanel panel6 = new JPanel(new GridLayout(1, 2)); JLabel SimulationTime = new JLabel("Simulation Time"); SimulationTimetext = new JTextField(); panel6.add(SimulationTime); panel6.add(SimulationTimetext); inputBoxes.add(panel6); frame.setSize(1200, 600); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); centrePanel = new JPanel(); centrePanel.add(panel); startButton = new JButton("Start"); centrePanel.add(startButton); frame.add(centrePanel, BorderLayout.CENTER); frame.add(inputBoxes, BorderLayout.SOUTH); frame.setVisible(true); frame.setLocationRelativeTo(null); } public void displayData(ArrayList<Task[]> tasks) { panel.removeAll(); panel.revalidate(); for (Task[] t : tasks) { JList<Task> jtasks = new JList<Task>(t); JScrollPane sp = new JScrollPane(jtasks); sp.setPreferredSize(new Dimension(300, 400)); panel.add(sp); } panel.repaint(); panel.revalidate(); } public JButton getStartButton() { return startButton; } public int[] getParameters() { parameters = new int[6]; parameters[0] = Integer.parseInt(MinArrivalTimetext.getText()); parameters[1] = Integer.parseInt(MaxArrivalTimetext.getText()); parameters[2] = Integer.parseInt(MinServiceTimetext.getText()); parameters[3] = Integer.parseInt(MaxServiceTimetext.getText()); parameters[4] = Integer.parseInt(SimulationTimetext.getText()); parameters[5] = Integer.parseInt(noQueuestext.getText()); return parameters; } public void displayStatistics(int[] averageWaitingTime, int[] averageServiceTime, int peakHour) { panel.removeAll(); panel.revalidate(); for (int i = 0; i < parameters[5]; i++) { JTextField sp = new JTextField(); sp.setText("Average waiting time: " + Integer.toString(averageWaitingTime[i]) + "Average service time: " + Integer.toString(averageServiceTime[i])); JTextField sp1 = new JTextField(); sp1.setText("Peak hour: "+Integer.toString(peakHour)); panel.add(sp); } panel.repaint(); panel.revalidate(); } }